import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 请使用5.8版mysql
 */
public class JDBCMain {
    private static final String URL="jdbc:mysql://172.16.0.11:3306/mysql?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true";
    private static final String NAME="root";
    private static final String PASSWORD="123456789";
    public static void main(String[] args) throws Exception{
          //1)使用 JDBC 原生接口，实现数据库的增删改查操作。
//        //1.加载驱动程序
//        Class.forName("com.mysql.cj.jdbc.Driver");
//        //2.获得数据库的连接
//        Connection conn = DriverManager.getConnection(URL, NAME, PASSWORD);
//        //3.通过数据库的连接操作数据库，实现增删改查
//        Statement stmt = conn.createStatement();
//        ResultSet rs = stmt.executeQuery("select * from db");//选择import java.sql.ResultSet;
//        while(rs.next()){//如果对象中有数据，就会循环打印出来
//            System.out.println(rs.getString("Host"));
//        }
//        //2）使用事务，PrepareStatement 方式，批处理方式，改进上述操作。
//        //1.加载驱动程序
//        Class.forName("com.mysql.cj.jdbc.Driver");
//        //2.获得数据库的连接
//        Connection conn = DriverManager.getConnection(URL, NAME, PASSWORD);
//        conn.setAutoCommit(false);//将自动提交关闭
//        PreparedStatement pstmt = conn.prepareStatement("    insert into default_roles (HOST, USER, DEFAULT_ROLE_HOST, DEFAULT_ROLE_USER)"+
//                "    values (?, ?, ?, ?)");
//        for(int i=0; i<5; i++){
//            pstmt.setString(1, "a"+i);
//            pstmt.setString(2, "a");
//            pstmt.setString(3, "a");
//            pstmt.setString(4, "a");
//            pstmt.addBatch();
//        }
//        pstmt.executeBatch();//执行批处理
//        conn.commit();//如果不commit等于回滚事务，即所有sql操作
        //3）配置 Hikari 连接池
        HikariConfig config=null;
        try
        {
            InputStream is =JDBCMain.class.getClassLoader().getResourceAsStream("hikaru.properties");
            // 加载属性文件并解析
            Properties props = new Properties();
            props.load(is);
            config = new HikariConfig(props);
        }catch (Exception ex)
        {

        }
        HikariDataSource ds = new HikariDataSource(config);
        Connection conn = ds.getConnection();
        conn.setAutoCommit(false);//将自动提交关闭
        PreparedStatement pstmt = conn.prepareStatement("    insert into default_roles (HOST, USER, DEFAULT_ROLE_HOST, DEFAULT_ROLE_USER)"+
                "    values (?, ?, ?, ?)");
        for(int i=0; i<5; i++){
            pstmt.setString(1, "a"+i);
            pstmt.setString(2, "a");
            pstmt.setString(3, "a");
            pstmt.setString(4, "a");
            pstmt.addBatch();
        }
        pstmt.executeBatch();//执行批处理
        conn.commit();//如果不commit等于回滚事务，即所有sql操作
    }

}
